【Tips】Mac OS X El CapitanでpipでのAWS CLIのインストール/アップデートが失敗するときの対処法
森永です。
El Capitanにしてからハマったので備忘として記述しておきます。
問題
El Capitanにしてから、AWS CLIをアップデートしました。
するとエラーが…
$ sudo pip install --upgrade awscli ... (略) ... Installing collected packages: six, python-dateutil, botocore, s3transfer, colorama, awscli Found existing installation: six 1.4.1 DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project. Uninstalling six-1.4.1: Exception: Traceback (most recent call last): File "/Library/Python/2.7/site-packages/pip/basecommand.py", line 215, in main status = self.run(options, args) File "/Library/Python/2.7/site-packages/pip/commands/install.py", line 317, in run prefix=options.prefix_path, File "/Library/Python/2.7/site-packages/pip/req/req_set.py", line 736, in install requirement.uninstall(auto_confirm=True) File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 742, in uninstall paths_to_remove.remove(auto_confirm) File "/Library/Python/2.7/site-packages/pip/req/req_uninstall.py", line 115, in remove renames(path, new_path) File "/Library/Python/2.7/site-packages/pip/utils/__init__.py", line 267, in renames shutil.move(old, new) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move copy2(src, real_dst) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2 copystat(src, dst) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat os.chflags(dst, st.st_flags) OSError: [Errno 1] Operation not permitted: '/tmp/pip-xZKz8y-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'
エラーを読んでみると、
sixというパッケージが1.4で古いので、1.5にアップデートするね!
→ 1.4はアンインストールしちゃうぞ!
→ 1.4アンインストール出来なかったよ…
→ インストール失敗
という流れのようです。
解決方法
sixをアップデートすればいいのかと思ってましたが、AWSのドキュメントに以下の記載がありました。
On OS X, if you see an error regarding the version of six that came with distutils in El Capitan, use the --ignore-installed option:
$ sudo pip install awscli --ignore-installed six
--ignore-installed six
ということでsixは無視しちゃっていいようです。
上記はインストール時ですが、アップデート時は以下のように実行すれば正常にアップデートできました。
$ sudo pip install --upgrade awscli --ignore-installed six
ちなみに、EB CLIも同じエラーが出ますので、同様の方法で回避できます。
$ sudo pip install --upgrade awsebcli --ignore-installed six
さいごに
Macならhomebrewでもいけるようなのでそちらを使うのもありですが、最新版を使いたいという場合はpipじゃないと対応していない可能性がありますので注意が必要です。
楽しいCLIライフを!